Authored: Kathy N. Lam
Date: January 13, 2020
Updated: April 12, 2021
library(flowCore) #for reading and manipulating flow data
library(ggcyto) #for using ggplot with flow data
library(scales) #for nice plot axes
library(cowplot) #for multi panel plots
library(Phenoflow) #for rarefying
library(tidyverse) #for data wrangling and plotting
(fs = read.flowSet(path="data_fcs"))
## A flowSet with 100 experiments.
##
## column names:
## 530/30 Blue B-A 610/20 YG C-A FSC-A FSC-H FSC-W SSC-A SSC-H SSC-W Time
colnames(fs)
## [1] "530/30 Blue B-A" "610/20 YG C-A" "FSC-A" "FSC-H"
## [5] "FSC-W" "SSC-A" "SSC-H" "SSC-W"
## [9] "Time"
pData(phenoData(fs))
#read in sample info
metadata = read_tsv("metadata.tsv") %>%
rename(name=Filename) %>%
mutate(Mouse = paste("Mouse", Mouse)) %>%
mutate(Day = paste("Day", Timepoint)) %>%
mutate(Treatment_Mouse = paste0(Treatment, "\n", Mouse)) %>%
mutate(Mouse_Treatment = paste0(Mouse, " (", Treatment, ")"))
## Parsed with column specification:
## cols(
## FlowSampleNumber = col_double(),
## `Mouse Sample Number` = col_double(),
## Experiment = col_character(),
## Treatment = col_character(),
## Mouse = col_double(),
## Timepoint = col_double(),
## Processing = col_character(),
## CollectEvents = col_character(),
## Filename = col_character(),
## Notes = col_logical()
## )
metadata$Mouse = factor(metadata$Mouse, levels=unique(metadata$Mouse))
metadata$Treatment_Mouse = factor(metadata$Treatment_Mouse, levels=unique(metadata$Treatment_Mouse))
metadata$Treatment = factor(metadata$Treatment, levels=unique(metadata $Treatment))
metadata$Day = factor(metadata$Day, levels=unique(metadata$Day))
metadata
#add columns to phenoData
phenoData(fs)$Order = seq(1, length(phenoData(fs)$name))
phenoData(fs)$Treatment = metadata$Treatment
phenoData(fs)$Timepoint = metadata$Timepoint
phenoData(fs)$Day = metadata$Day
phenoData(fs)$Name = metadata$name
phenoData(fs)$Mouse = metadata$Mouse
phenoData(fs)$Treatment_Mouse = metadata$Treatment_Mouse
phenoData(fs)$Mouse_Treatment = metadata$Mouse_Treatment
pData(phenoData(fs))
#make labeller function for facet_wrap
order = as.character(phenoData(fs)$Order)
name = phenoData(fs)$Name
order_names = mapply(c, order, name, SIMPLIFY = FALSE) #make a one-to-one
order_names = lapply(order_names, `[[`, 2) #keep second element of each vector in the list
order_names = order_names[as.character(sort(as.numeric(names(order_names))))] #numerically sort
order_labeller = function(variable,value){
return(order_names[value])
}
scatter = rbind(c(0, 1e4),
c(1e5, 1e4),
c(1e5, 2.5e5),
c(0, 2.5e5))
colnames(scatter)=c("FSC-A", "SSC-A")
scatter = as.data.frame(scatter)
ggplot() +
geom_point(data=fs, aes(x=`FSC-A`, y=`SSC-A`), shape=16, size=0.75, alpha=0.5) +
scale_y_continuous(name="SSC-A (Granularity)\n", limits = c(-2e1,3e5)) +
scale_x_continuous(name="\nFSC-A (Size)", limit=c(-2e1,3e5)) +
facet_grid(Mouse~Timepoint) +
theme_linedraw(14) +
theme(panel.grid = element_blank(), axis.text.x=element_text(angle=90,hjust=1)) +
geom_polygon(data=scatter, aes(x=`FSC-A`, y=`SSC-A`), fill=NA, colour="indianred", size=0.5, linetype="solid")
## Warning: Removed 29191 rows containing missing values (geom_point).
gate_scatter = polygonGate(filterId="scatter", `FSC-A` = scatter$`FSC-A`, `SSC-A` = scatter$`SSC-A`)
result = flowCore::filter(fs, gate_scatter)
events = flowCore::Subset(fs, result)
events = Phenoflow::FCS_resample(events, replace = FALSE)
## Your samples range between 57249 and 90877 cells
## Your samples were randomly subsampled to 57249 cells
red = rbind(
c(-1e3, 4e3),
c(-1e3, 4e5),
c( 4000, 4e5),
c( 1000, 4e3))
colnames(red)=c("530/30 Blue B-A", "610/20 YG C-A")
red = as.data.frame(red)
green = rbind(
c(9e2, -1e3),
c(4.5e3, 800),
c(1.5e5, 800),
c(1.5e5, -1e3))
colnames(green)=c("530/30 Blue B-A", "610/20 YG C-A")
green = as.data.frame(green)
ggplot() +
geom_polygon(data=green, aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), fill=NA, colour="green4", size=0.5, linetype="solid") +
geom_polygon(data=red, aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), fill=NA, colour="red3", size=0.5, linetype="solid") +
geom_point(data=events, aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.5, alpha=0.2) +
theme_linedraw(12) +
ggcyto::scale_y_flowjo_biexp(name="mCherry intensity", widthBasis=-500, pos=5, neg=0, breaks=c(0, 1e3,1e4,1e5), limits=c(-1e3, 4e5)) +
ggcyto::scale_x_flowjo_biexp(name="GFP intensity", widthBasis=-500, pos=5, neg=0, breaks=c(0, 1e3,1e4,1e5), limits=c(-1e3, 1.5e5)) +
theme(panel.grid = element_blank(),
axis.title.x = element_text(colour="green4"),
axis.title.y = element_text(colour="red3")) +
facet_grid(Mouse~Timepoint)
## Warning: Removed 50 rows containing missing values (geom_point).
gate_green = polygonGate(filterId="green", `530/30 Blue B-A` = green$`530/30 Blue B-A`, `610/20 YG C-A` = green$`610/20 YG C-A`)
result_green = flowCore::filter(events, gate_green)
events_green = Subset(events, result_green)
gate_red = polygonGate(filterId="red", `530/30 Blue B-A` = red$`530/30 Blue B-A`, `610/20 YG C-A` = red$`610/20 YG C-A`)
result_red = flowCore::filter(events, gate_red)
events_red = Subset(events, result_red)
percent_red = toTable(summary(result_red)) %>%
mutate(x=2e5, y=2e5, colour="red", order=phenoData(events)$order) %>%
rename(name=sample) %>%
left_join(metadata, by="name")
## filter summary for frame 'Specimen_001_Sample_001_001.fcs'
## red+: 5 of 57249 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_002_002.fcs'
## red+: 2120 of 57249 events (3.70%)
##
## filter summary for frame 'Specimen_001_Sample_003_003.fcs'
## red+: 3441 of 57249 events (6.01%)
##
## filter summary for frame 'Specimen_001_Sample_004_004.fcs'
## red+: 859 of 57249 events (1.50%)
##
## filter summary for frame 'Specimen_001_Sample_005_005.fcs'
## red+: 87 of 57249 events (0.15%)
##
## filter summary for frame 'Specimen_001_Sample_006_006.fcs'
## red+: 2 of 57249 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_007_007.fcs'
## red+: 6104 of 57249 events (10.66%)
##
## filter summary for frame 'Specimen_001_Sample_008_008.fcs'
## red+: 2302 of 57249 events (4.02%)
##
## filter summary for frame 'Specimen_001_Sample_009_009.fcs'
## red+: 24637 of 57249 events (43.03%)
##
## filter summary for frame 'Specimen_001_Sample_010_010.fcs'
## red+: 15171 of 57249 events (26.50%)
##
## filter summary for frame 'Specimen_001_Sample_011_011.fcs'
## red+: 11 of 57249 events (0.02%)
##
## filter summary for frame 'Specimen_001_Sample_012_012.fcs'
## red+: 3714 of 57249 events (6.49%)
##
## filter summary for frame 'Specimen_001_Sample_013_013.fcs'
## red+: 1308 of 57249 events (2.28%)
##
## filter summary for frame 'Specimen_001_Sample_014_014.fcs'
## red+: 474 of 57249 events (0.83%)
##
## filter summary for frame 'Specimen_001_Sample_015_015.fcs'
## red+: 67 of 57249 events (0.12%)
##
## filter summary for frame 'Specimen_001_Sample_016_016.fcs'
## red+: 0 of 57249 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_017_017.fcs'
## red+: 3736 of 57249 events (6.53%)
##
## filter summary for frame 'Specimen_001_Sample_018_018.fcs'
## red+: 4 of 57249 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_019_019.fcs'
## red+: 4 of 57249 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_020_020.fcs'
## red+: 0 of 57249 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_021_021.fcs'
## red+: 4 of 57249 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_022_022.fcs'
## red+: 7861 of 57249 events (13.73%)
##
## filter summary for frame 'Specimen_001_Sample_023_023.fcs'
## red+: 360 of 57249 events (0.63%)
##
## filter summary for frame 'Specimen_001_Sample_024_024.fcs'
## red+: 40 of 57249 events (0.07%)
##
## filter summary for frame 'Specimen_001_Sample_025_025.fcs'
## red+: 4 of 57249 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_026_026.fcs'
## red+: 30 of 57249 events (0.05%)
##
## filter summary for frame 'Specimen_001_Sample_027_027.fcs'
## red+: 3829 of 57249 events (6.69%)
##
## filter summary for frame 'Specimen_001_Sample_028_028.fcs'
## red+: 65 of 57249 events (0.11%)
##
## filter summary for frame 'Specimen_001_Sample_029_029.fcs'
## red+: 8 of 57249 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_030_030.fcs'
## red+: 3 of 57249 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_031_031.fcs'
## red+: 1 of 57249 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_032_032.fcs'
## red+: 5329 of 57249 events (9.31%)
##
## filter summary for frame 'Specimen_001_Sample_033_033.fcs'
## red+: 10 of 57249 events (0.02%)
##
## filter summary for frame 'Specimen_001_Sample_034_034.fcs'
## red+: 5 of 57249 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_035_035.fcs'
## red+: 26 of 57249 events (0.05%)
##
## filter summary for frame 'Specimen_001_Sample_036_036.fcs'
## red+: 0 of 57249 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_037_037.fcs'
## red+: 10327 of 57249 events (18.04%)
##
## filter summary for frame 'Specimen_001_Sample_038_038.fcs'
## red+: 33 of 57249 events (0.06%)
##
## filter summary for frame 'Specimen_001_Sample_039_039.fcs'
## red+: 8 of 57249 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_040_040.fcs'
## red+: 315 of 57249 events (0.55%)
##
## filter summary for frame 'Specimen_001_Sample_041_041.fcs'
## red+: 3 of 57249 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_042_042.fcs'
## red+: 3916 of 57249 events (6.84%)
##
## filter summary for frame 'Specimen_001_Sample_043_043.fcs'
## red+: 20 of 57249 events (0.03%)
##
## filter summary for frame 'Specimen_001_Sample_044_044.fcs'
## red+: 47 of 57249 events (0.08%)
##
## filter summary for frame 'Specimen_001_Sample_045_045.fcs'
## red+: 2194 of 57249 events (3.83%)
##
## filter summary for frame 'Specimen_001_Sample_046_046.fcs'
## red+: 0 of 57249 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_047_047.fcs'
## red+: 3476 of 57249 events (6.07%)
##
## filter summary for frame 'Specimen_001_Sample_048_048.fcs'
## red+: 3000 of 57249 events (5.24%)
##
## filter summary for frame 'Specimen_001_Sample_049_049.fcs'
## red+: 12405 of 57249 events (21.67%)
##
## filter summary for frame 'Specimen_001_Sample_050_050.fcs'
## red+: 1567 of 57249 events (2.74%)
##
## filter summary for frame 'Specimen_001_Sample_051_051.fcs'
## red+: 0 of 57249 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_052_052.fcs'
## red+: 2140 of 57249 events (3.74%)
##
## filter summary for frame 'Specimen_001_Sample_053_053.fcs'
## red+: 9827 of 57249 events (17.17%)
##
## filter summary for frame 'Specimen_001_Sample_054_054.fcs'
## red+: 7463 of 57249 events (13.04%)
##
## filter summary for frame 'Specimen_001_Sample_055_055.fcs'
## red+: 6184 of 57249 events (10.80%)
##
## filter summary for frame 'Specimen_001_Sample_056_056.fcs'
## red+: 5 of 57249 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_057_057.fcs'
## red+: 5156 of 57249 events (9.01%)
##
## filter summary for frame 'Specimen_001_Sample_058_058.fcs'
## red+: 13248 of 57249 events (23.14%)
##
## filter summary for frame 'Specimen_001_Sample_059_059.fcs'
## red+: 4429 of 57249 events (7.74%)
##
## filter summary for frame 'Specimen_001_Sample_060_060.fcs'
## red+: 15858 of 57249 events (27.70%)
##
## filter summary for frame 'Specimen_001_Sample_061_061.fcs'
## red+: 3 of 57249 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_062_062.fcs'
## red+: 2627 of 57249 events (4.59%)
##
## filter summary for frame 'Specimen_001_Sample_063_063.fcs'
## red+: 8 of 57249 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_064_064.fcs'
## red+: 1 of 57249 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_065_065.fcs'
## red+: 19357 of 57249 events (33.81%)
##
## filter summary for frame 'Specimen_001_Sample_066_066.fcs'
## red+: 1 of 57249 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_067_067.fcs'
## red+: 5302 of 57249 events (9.26%)
##
## filter summary for frame 'Specimen_001_Sample_068_068.fcs'
## red+: 8 of 57249 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_069_069.fcs'
## red+: 4 of 57249 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_070_070.fcs'
## red+: 13 of 57249 events (0.02%)
##
## filter summary for frame 'Specimen_001_Sample_071_071.fcs'
## red+: 3 of 57249 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_072_072.fcs'
## red+: 3372 of 57249 events (5.89%)
##
## filter summary for frame 'Specimen_001_Sample_073_073.fcs'
## red+: 7220 of 57249 events (12.61%)
##
## filter summary for frame 'Specimen_001_Sample_074_074.fcs'
## red+: 5401 of 57249 events (9.43%)
##
## filter summary for frame 'Specimen_001_Sample_075_075.fcs'
## red+: 1174 of 57249 events (2.05%)
##
## filter summary for frame 'Specimen_001_Sample_076_076.fcs'
## red+: 20 of 57249 events (0.03%)
##
## filter summary for frame 'Specimen_001_Sample_077_077.fcs'
## red+: 2674 of 57249 events (4.67%)
##
## filter summary for frame 'Specimen_001_Sample_078_078.fcs'
## red+: 17890 of 57249 events (31.25%)
##
## filter summary for frame 'Specimen_001_Sample_079_079.fcs'
## red+: 15952 of 57249 events (27.86%)
##
## filter summary for frame 'Specimen_001_Sample_080_080.fcs'
## red+: 7398 of 57249 events (12.92%)
##
## filter summary for frame 'Specimen_001_Sample_081_081.fcs'
## red+: 0 of 57249 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_082_082.fcs'
## red+: 2191 of 57249 events (3.83%)
##
## filter summary for frame 'Specimen_001_Sample_083_083.fcs'
## red+: 35866 of 57249 events (62.65%)
##
## filter summary for frame 'Specimen_001_Sample_084_084.fcs'
## red+: 16459 of 57249 events (28.75%)
##
## filter summary for frame 'Specimen_001_Sample_085_085.fcs'
## red+: 1252 of 57249 events (2.19%)
##
## filter summary for frame 'Specimen_001_Sample_086_086.fcs'
## red+: 2 of 57249 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_087_087.fcs'
## red+: 4489 of 57249 events (7.84%)
##
## filter summary for frame 'Specimen_001_Sample_088_088.fcs'
## red+: 10552 of 57249 events (18.43%)
##
## filter summary for frame 'Specimen_001_Sample_089_089.fcs'
## red+: 14525 of 57249 events (25.37%)
##
## filter summary for frame 'Specimen_001_Sample_090_090.fcs'
## red+: 9585 of 57249 events (16.74%)
##
## filter summary for frame 'Specimen_001_Sample_091_091.fcs'
## red+: 1 of 57249 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_092_092.fcs'
## red+: 2822 of 57249 events (4.93%)
##
## filter summary for frame 'Specimen_001_Sample_093_093.fcs'
## red+: 7235 of 57249 events (12.64%)
##
## filter summary for frame 'Specimen_001_Sample_094_094.fcs'
## red+: 11861 of 57249 events (20.72%)
##
## filter summary for frame 'Specimen_001_Sample_095_095.fcs'
## red+: 10834 of 57249 events (18.92%)
##
## filter summary for frame 'Specimen_001_Sample_096_096.fcs'
## red+: 2 of 57249 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_097_097.fcs'
## red+: 2111 of 57249 events (3.69%)
##
## filter summary for frame 'Specimen_001_Sample_098_098.fcs'
## red+: 10397 of 57249 events (18.16%)
##
## filter summary for frame 'Specimen_001_Sample_099_099.fcs'
## red+: 24615 of 57249 events (43.00%)
##
## filter summary for frame 'Specimen_001_Sample_100_100.fcs'
## red+: 1622 of 57249 events (2.83%)
percent_green = toTable(summary(result_green)) %>%
mutate(x=2e5, y=1e5, colour="green", order=phenoData(events)$order) %>%
rename(name=sample) %>%
left_join(metadata, by="name")
## filter summary for frame 'Specimen_001_Sample_001_001.fcs'
## green+: 173 of 57249 events (0.30%)
##
## filter summary for frame 'Specimen_001_Sample_002_002.fcs'
## green+: 4451 of 57249 events (7.77%)
##
## filter summary for frame 'Specimen_001_Sample_003_003.fcs'
## green+: 9207 of 57249 events (16.08%)
##
## filter summary for frame 'Specimen_001_Sample_004_004.fcs'
## green+: 15370 of 57249 events (26.85%)
##
## filter summary for frame 'Specimen_001_Sample_005_005.fcs'
## green+: 6664 of 57249 events (11.64%)
##
## filter summary for frame 'Specimen_001_Sample_006_006.fcs'
## green+: 106 of 57249 events (0.19%)
##
## filter summary for frame 'Specimen_001_Sample_007_007.fcs'
## green+: 7186 of 57249 events (12.55%)
##
## filter summary for frame 'Specimen_001_Sample_008_008.fcs'
## green+: 5536 of 57249 events (9.67%)
##
## filter summary for frame 'Specimen_001_Sample_009_009.fcs'
## green+: 1117 of 57249 events (1.95%)
##
## filter summary for frame 'Specimen_001_Sample_010_010.fcs'
## green+: 13325 of 57249 events (23.28%)
##
## filter summary for frame 'Specimen_001_Sample_011_011.fcs'
## green+: 382 of 57249 events (0.67%)
##
## filter summary for frame 'Specimen_001_Sample_012_012.fcs'
## green+: 6302 of 57249 events (11.01%)
##
## filter summary for frame 'Specimen_001_Sample_013_013.fcs'
## green+: 9142 of 57249 events (15.97%)
##
## filter summary for frame 'Specimen_001_Sample_014_014.fcs'
## green+: 19647 of 57249 events (34.32%)
##
## filter summary for frame 'Specimen_001_Sample_015_015.fcs'
## green+: 7022 of 57249 events (12.27%)
##
## filter summary for frame 'Specimen_001_Sample_016_016.fcs'
## green+: 194 of 57249 events (0.34%)
##
## filter summary for frame 'Specimen_001_Sample_017_017.fcs'
## green+: 9707 of 57249 events (16.96%)
##
## filter summary for frame 'Specimen_001_Sample_018_018.fcs'
## green+: 20723 of 57249 events (36.20%)
##
## filter summary for frame 'Specimen_001_Sample_019_019.fcs'
## green+: 12320 of 57249 events (21.52%)
##
## filter summary for frame 'Specimen_001_Sample_020_020.fcs'
## green+: 8278 of 57249 events (14.46%)
##
## filter summary for frame 'Specimen_001_Sample_021_021.fcs'
## green+: 159 of 57249 events (0.28%)
##
## filter summary for frame 'Specimen_001_Sample_022_022.fcs'
## green+: 19576 of 57249 events (34.19%)
##
## filter summary for frame 'Specimen_001_Sample_023_023.fcs'
## green+: 12223 of 57249 events (21.35%)
##
## filter summary for frame 'Specimen_001_Sample_024_024.fcs'
## green+: 19027 of 57249 events (33.24%)
##
## filter summary for frame 'Specimen_001_Sample_025_025.fcs'
## green+: 18754 of 57249 events (32.76%)
##
## filter summary for frame 'Specimen_001_Sample_026_026.fcs'
## green+: 562 of 57249 events (0.98%)
##
## filter summary for frame 'Specimen_001_Sample_027_027.fcs'
## green+: 5194 of 57249 events (9.07%)
##
## filter summary for frame 'Specimen_001_Sample_028_028.fcs'
## green+: 7944 of 57249 events (13.88%)
##
## filter summary for frame 'Specimen_001_Sample_029_029.fcs'
## green+: 9030 of 57249 events (15.77%)
##
## filter summary for frame 'Specimen_001_Sample_030_030.fcs'
## green+: 22054 of 57249 events (38.52%)
##
## filter summary for frame 'Specimen_001_Sample_031_031.fcs'
## green+: 69 of 57249 events (0.12%)
##
## filter summary for frame 'Specimen_001_Sample_032_032.fcs'
## green+: 6328 of 57249 events (11.05%)
##
## filter summary for frame 'Specimen_001_Sample_033_033.fcs'
## green+: 414 of 57249 events (0.72%)
##
## filter summary for frame 'Specimen_001_Sample_034_034.fcs'
## green+: 9841 of 57249 events (17.19%)
##
## filter summary for frame 'Specimen_001_Sample_035_035.fcs'
## green+: 18004 of 57249 events (31.45%)
##
## filter summary for frame 'Specimen_001_Sample_036_036.fcs'
## green+: 30 of 57249 events (0.05%)
##
## filter summary for frame 'Specimen_001_Sample_037_037.fcs'
## green+: 16029 of 57249 events (28.00%)
##
## filter summary for frame 'Specimen_001_Sample_038_038.fcs'
## green+: 430 of 57249 events (0.75%)
##
## filter summary for frame 'Specimen_001_Sample_039_039.fcs'
## green+: 301 of 57249 events (0.53%)
##
## filter summary for frame 'Specimen_001_Sample_040_040.fcs'
## green+: 1550 of 57249 events (2.71%)
##
## filter summary for frame 'Specimen_001_Sample_041_041.fcs'
## green+: 239 of 57249 events (0.42%)
##
## filter summary for frame 'Specimen_001_Sample_042_042.fcs'
## green+: 6410 of 57249 events (11.20%)
##
## filter summary for frame 'Specimen_001_Sample_043_043.fcs'
## green+: 327 of 57249 events (0.57%)
##
## filter summary for frame 'Specimen_001_Sample_044_044.fcs'
## green+: 235 of 57249 events (0.41%)
##
## filter summary for frame 'Specimen_001_Sample_045_045.fcs'
## green+: 6141 of 57249 events (10.73%)
##
## filter summary for frame 'Specimen_001_Sample_046_046.fcs'
## green+: 109 of 57249 events (0.19%)
##
## filter summary for frame 'Specimen_001_Sample_047_047.fcs'
## green+: 6692 of 57249 events (11.69%)
##
## filter summary for frame 'Specimen_001_Sample_048_048.fcs'
## green+: 12634 of 57249 events (22.07%)
##
## filter summary for frame 'Specimen_001_Sample_049_049.fcs'
## green+: 11285 of 57249 events (19.71%)
##
## filter summary for frame 'Specimen_001_Sample_050_050.fcs'
## green+: 337 of 57249 events (0.59%)
##
## filter summary for frame 'Specimen_001_Sample_051_051.fcs'
## green+: 63 of 57249 events (0.11%)
##
## filter summary for frame 'Specimen_001_Sample_052_052.fcs'
## green+: 3705 of 57249 events (6.47%)
##
## filter summary for frame 'Specimen_001_Sample_053_053.fcs'
## green+: 749 of 57249 events (1.31%)
##
## filter summary for frame 'Specimen_001_Sample_054_054.fcs'
## green+: 2626 of 57249 events (4.59%)
##
## filter summary for frame 'Specimen_001_Sample_055_055.fcs'
## green+: 472 of 57249 events (0.82%)
##
## filter summary for frame 'Specimen_001_Sample_056_056.fcs'
## green+: 396 of 57249 events (0.69%)
##
## filter summary for frame 'Specimen_001_Sample_057_057.fcs'
## green+: 12624 of 57249 events (22.05%)
##
## filter summary for frame 'Specimen_001_Sample_058_058.fcs'
## green+: 427 of 57249 events (0.75%)
##
## filter summary for frame 'Specimen_001_Sample_059_059.fcs'
## green+: 4057 of 57249 events (7.09%)
##
## filter summary for frame 'Specimen_001_Sample_060_060.fcs'
## green+: 449 of 57249 events (0.78%)
##
## filter summary for frame 'Specimen_001_Sample_061_061.fcs'
## green+: 273 of 57249 events (0.48%)
##
## filter summary for frame 'Specimen_001_Sample_062_062.fcs'
## green+: 4919 of 57249 events (8.59%)
##
## filter summary for frame 'Specimen_001_Sample_063_063.fcs'
## green+: 371 of 57249 events (0.65%)
##
## filter summary for frame 'Specimen_001_Sample_064_064.fcs'
## green+: 156 of 57249 events (0.27%)
##
## filter summary for frame 'Specimen_001_Sample_065_065.fcs'
## green+: 1046 of 57249 events (1.83%)
##
## filter summary for frame 'Specimen_001_Sample_066_066.fcs'
## green+: 96 of 57249 events (0.17%)
##
## filter summary for frame 'Specimen_001_Sample_067_067.fcs'
## green+: 9452 of 57249 events (16.51%)
##
## filter summary for frame 'Specimen_001_Sample_068_068.fcs'
## green+: 468 of 57249 events (0.82%)
##
## filter summary for frame 'Specimen_001_Sample_069_069.fcs'
## green+: 170 of 57249 events (0.30%)
##
## filter summary for frame 'Specimen_001_Sample_070_070.fcs'
## green+: 442 of 57249 events (0.77%)
##
## filter summary for frame 'Specimen_001_Sample_071_071.fcs'
## green+: 183 of 57249 events (0.32%)
##
## filter summary for frame 'Specimen_001_Sample_072_072.fcs'
## green+: 6584 of 57249 events (11.50%)
##
## filter summary for frame 'Specimen_001_Sample_073_073.fcs'
## green+: 615 of 57249 events (1.07%)
##
## filter summary for frame 'Specimen_001_Sample_074_074.fcs'
## green+: 353 of 57249 events (0.62%)
##
## filter summary for frame 'Specimen_001_Sample_075_075.fcs'
## green+: 32 of 57249 events (0.06%)
##
## filter summary for frame 'Specimen_001_Sample_076_076.fcs'
## green+: 447 of 57249 events (0.78%)
##
## filter summary for frame 'Specimen_001_Sample_077_077.fcs'
## green+: 4667 of 57249 events (8.15%)
##
## filter summary for frame 'Specimen_001_Sample_078_078.fcs'
## green+: 167 of 57249 events (0.29%)
##
## filter summary for frame 'Specimen_001_Sample_079_079.fcs'
## green+: 458 of 57249 events (0.80%)
##
## filter summary for frame 'Specimen_001_Sample_080_080.fcs'
## green+: 111 of 57249 events (0.19%)
##
## filter summary for frame 'Specimen_001_Sample_081_081.fcs'
## green+: 58 of 57249 events (0.10%)
##
## filter summary for frame 'Specimen_001_Sample_082_082.fcs'
## green+: 3947 of 57249 events (6.89%)
##
## filter summary for frame 'Specimen_001_Sample_083_083.fcs'
## green+: 32 of 57249 events (0.06%)
##
## filter summary for frame 'Specimen_001_Sample_084_084.fcs'
## green+: 183 of 57249 events (0.32%)
##
## filter summary for frame 'Specimen_001_Sample_085_085.fcs'
## green+: 301 of 57249 events (0.53%)
##
## filter summary for frame 'Specimen_001_Sample_086_086.fcs'
## green+: 85 of 57249 events (0.15%)
##
## filter summary for frame 'Specimen_001_Sample_087_087.fcs'
## green+: 7934 of 57249 events (13.86%)
##
## filter summary for frame 'Specimen_001_Sample_088_088.fcs'
## green+: 76 of 57249 events (0.13%)
##
## filter summary for frame 'Specimen_001_Sample_089_089.fcs'
## green+: 161 of 57249 events (0.28%)
##
## filter summary for frame 'Specimen_001_Sample_090_090.fcs'
## green+: 195 of 57249 events (0.34%)
##
## filter summary for frame 'Specimen_001_Sample_091_091.fcs'
## green+: 62 of 57249 events (0.11%)
##
## filter summary for frame 'Specimen_001_Sample_092_092.fcs'
## green+: 16806 of 57249 events (29.36%)
##
## filter summary for frame 'Specimen_001_Sample_093_093.fcs'
## green+: 282 of 57249 events (0.49%)
##
## filter summary for frame 'Specimen_001_Sample_094_094.fcs'
## green+: 1377 of 57249 events (2.41%)
##
## filter summary for frame 'Specimen_001_Sample_095_095.fcs'
## green+: 3544 of 57249 events (6.19%)
##
## filter summary for frame 'Specimen_001_Sample_096_096.fcs'
## green+: 141 of 57249 events (0.25%)
##
## filter summary for frame 'Specimen_001_Sample_097_097.fcs'
## green+: 5387 of 57249 events (9.41%)
##
## filter summary for frame 'Specimen_001_Sample_098_098.fcs'
## green+: 139 of 57249 events (0.24%)
##
## filter summary for frame 'Specimen_001_Sample_099_099.fcs'
## green+: 163 of 57249 events (0.28%)
##
## filter summary for frame 'Specimen_001_Sample_100_100.fcs'
## green+: 67 of 57249 events (0.12%)
percentage = bind_rows(percent_red, percent_green) %>%
group_by(name) %>%
mutate(total_gfp_mcherry = sum(true)) %>%
mutate(fraction_fluor = round(true/total_gfp_mcherry, 3)) %>%
mutate(percent_fluor = fraction_fluor*100) %>%
mutate(label = paste(true, "events"))
ggplot() +
geom_point(data=events, aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.5, alpha=0.2, colour="black") +
geom_point(data=events_green, aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.5, alpha=0.2, colour="green4") +
geom_point(data=events_red, aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.5, alpha=0.2, colour="red3") +
geom_text(data=percentage, aes(x=x, y=y, label=label, colour=colour), size=3, hjust=1) +
geom_text(data=percentage, aes(x=2e5, y=4e5, label=paste0(count, " events total")), colour="grey27", size=3, hjust=1) +
scale_colour_manual(values=c("green4", "red3")) +
ggcyto::scale_y_flowjo_biexp(name="mCherry intensity", widthBasis=-500, pos=5, neg=0, breaks=c(0, 1e3,1e4,1e5), limits=c(-1e3, 5.5e5)) +
ggcyto::scale_x_flowjo_biexp(name="GFP intensity", widthBasis=-500, pos=5, neg=0, breaks=c(0, 1e3,1e4,1e5), limits=c(-1e3, 3e5)) +
theme_linedraw(12) +
theme(panel.grid = element_blank(),
axis.title.x = element_text(colour="green4"),
axis.title.y = element_text(colour="red3"),
legend.position = "none") +
facet_grid(Mouse~Timepoint)
## Warning: Removed 3 rows containing missing values (geom_point).
ggsave("figures/exp17_GFP_mCherry_scatterplot.png", width=12, height=40, dpi=150)
## Warning: Removed 3 rows containing missing values (geom_point).
samples = metadata %>%
dplyr::filter(Treatment == "NT") %>%
pull(FlowSampleNumber)
percentage_samples = percentage %>%
dplyr::filter(FlowSampleNumber %in% samples)
ggplot() +
geom_point(data=events[samples], aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.5, alpha=0.2, colour="black") +
geom_point(data=events_green[samples], aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.5, alpha=0.2, colour="green4") +
geom_point(data=events_red[samples], aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.5, alpha=0.2, colour="red3") +
geom_text(data=percentage_samples, aes(x=x, y=y, label=label, colour=colour), size=3, hjust=1) +
geom_text(data=percentage_samples, aes(x=2e5, y=4e5, label=paste0(count, " events total")), colour="grey27", size=3, hjust=1) +
scale_colour_manual(values=c("green4", "red3")) +
ggcyto::scale_y_flowjo_biexp(name="mCherry intensity", widthBasis=-500, pos=5, neg=0, breaks=c(0, 1e3,1e4,1e5), limits=c(-1e3, 5.5e5)) +
ggcyto::scale_x_flowjo_biexp(name="GFP intensity", widthBasis=-500, pos=5, neg=0, breaks=c(0, 1e3,1e4,1e5), limits=c(-1e3, 3e5)) +
theme_linedraw(12) +
theme(panel.grid = element_blank(),
axis.title.x = element_text(colour="green4"),
axis.title.y = element_text(colour="red3"),
legend.position = "none") +
facet_grid(Mouse_Treatment~Day)
## Warning: Removed 1 rows containing missing values (geom_point).
ggsave("figures/exp17_GFP_mCherry_scatterplot_NT.png", width=12, height=20, dpi=150)
## Warning: Removed 1 rows containing missing values (geom_point).
samples = metadata %>%
filter(Treatment == "GFPT") %>%
pull(FlowSampleNumber)
percentage_samples = percentage %>%
filter(FlowSampleNumber %in% samples)
ggplot() +
geom_point(data=events[samples], aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.5, alpha=0.2, colour="black") +
geom_point(data=events_green[samples], aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.5, alpha=0.2, colour="green4") +
geom_point(data=events_red[samples], aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.5, alpha=0.2, colour="red3") +
geom_text(data=percentage_samples, aes(x=x, y=y, label=label, colour=colour), size=3, hjust=1) +
geom_text(data=percentage_samples, aes(x=2e5, y=4e5, label=paste0(count, " events total")), colour="grey27", size=3, hjust=1) +
scale_colour_manual(values=c("green4", "red3")) +
ggcyto::scale_y_flowjo_biexp(name="mCherry intensity", widthBasis=-500, pos=5, neg=0, breaks=c(0, 1e3,1e4,1e5), limits=c(-1e3, 5.5e5)) +
ggcyto::scale_x_flowjo_biexp(name="GFP intensity", widthBasis=-500, pos=5, neg=0, breaks=c(0, 1e3,1e4,1e5), limits=c(-1e3, 3e5)) +
theme_linedraw(12) +
theme(panel.grid = element_blank(),
axis.title.x = element_text(colour="green4"),
axis.title.y = element_text(colour="red3"),
legend.position = "none") +
facet_grid(Mouse_Treatment~Day)
## Warning: Removed 2 rows containing missing values (geom_point).
ggsave("figures/exp17_GFP_mCherry_scatterplot_GFPT.png", width=12, height=20, dpi=150)
## Warning: Removed 2 rows containing missing values (geom_point).
subset = c("Mouse 2", "Mouse 15")
samples = metadata %>%
filter(Mouse %in% subset) %>%
pull(FlowSampleNumber)
percentage_samples = percentage %>%
filter(Mouse %in% subset)
ggplot() +
geom_point(data=events[samples], aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.5, alpha=0.2, colour="black") +
geom_point(data=events_green[samples], aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.5, alpha=0.2, colour="green4") +
geom_point(data=events_red[samples], aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.5, alpha=0.2, colour="red3") +
geom_text(data=percentage_samples, aes(x=x, y=y, label=label, colour=colour), size=3, hjust=1) +
geom_text(data=percentage_samples, aes(x=2e5, y=4e5, label=paste0(count, " events total")), colour="grey27", size=3, hjust=1) +
scale_colour_manual(values=c("green4", "red3")) +
ggcyto::scale_y_flowjo_biexp(name="mCherry intensity", widthBasis=-500, pos=5, neg=0, breaks=c(0, 1e3,1e4,1e5), limits=c(-1e3, 5.5e5)) +
ggcyto::scale_x_flowjo_biexp(name="GFP intensity", widthBasis=-500, pos=5, neg=0, breaks=c(0, 1e3,1e4,1e5), limits=c(-1e3, 3e5)) +
theme_linedraw(14) +
theme(panel.grid = element_blank(),
panel.border = element_rect(size=1.25),
axis.title.x = element_text(colour="green4"),
axis.title.y = element_text(colour="red3"),
legend.position = "none") +
facet_grid(Treatment_Mouse~Day)
ggsave("figures/exp17_GFP_mCherry_scatterplot_M2_M15.png", width=12, height=5, dpi=150)
#calculate max observed for green or red for later filtering
bg_green_high = percentage %>%
dplyr::filter(population == "green+", Timepoint == -3) %>%
pull(true) %>%
max()
bg_red_high = percentage %>%
dplyr::filter(population == "red+", Timepoint == -3) %>%
pull(true) %>%
max()
#set background for both green/red based on each mouse
percentage = percentage %>%
group_by(Mouse, population) %>%
mutate(bg = true[which(Timepoint == -3)]) %>%
ungroup() %>%
mutate(positive_events_minusbg = true - bg)
#set all negative values or 0 values to one
percentage = percentage %>%
mutate(positive_events_minusbg_nozeros = as.double(positive_events_minusbg)) %>%
mutate(positive_events_minusbg_nozeros = case_when(positive_events_minusbg_nozeros <= 0 ~ 1,
positive_events_minusbg_nozeros > 0 ~ positive_events_minusbg_nozeros))
ggplot(percentage) +
annotate("rect", xmin=0.25, xmax=7.25, ymin=0, ymax=Inf, fill="honeydew2", colour=NA, alpha=0.75) +
geom_line(aes(x=Timepoint, y=positive_events_minusbg_nozeros, colour=population, group=interaction(Mouse, population)), size=1) +
geom_point(aes(x=Timepoint, y=positive_events_minusbg_nozeros, colour=population), size=2, alpha=1) +
scale_y_log10(name="Positive events \n(background subtracted)\n", labels = trans_format("log10", math_format(10^.x))) +
scale_x_continuous(name="Day", breaks=seq(-4,15,2)) +
scale_colour_manual(values=c("green4", "red3")) +
theme_linedraw(12) +
theme(panel.grid = element_blank(), panel.grid.major.y = element_blank(), panel.border=element_rect(size=1.5), legend.position = "top") +
annotation_logticks(sides="l") +
facet_wrap(~Mouse_Treatment)
## Warning: Transformation introduced infinite values in continuous y-axis
ggsave("figures/exp17_timecourse_green_red_byMouse_unfiltered.png", height=8, width=12, dpi=150)
## Warning: Transformation introduced infinite values in continuous y-axis
#filter out timepoints where red AND green are both below the highest background observed for each multiplied by a factor
percentage_filtered = percentage %>%
mutate(bg_high = case_when(population == "green+" ~ bg_green_high, population == "red+" ~ bg_red_high)) %>% #background depending on fluor
mutate(below_background = ifelse(true > bg_high * 3, "no", "yes")) %>% #mark whether above or below background
mutate(Mouse_Timepoint = paste(Mouse, Timepoint))
#make new table of mouse+timepoint to filter by
filter_below = percentage_filtered %>%
dplyr::select(Mouse, Timepoint, Mouse_Timepoint, population, bg, below_background) %>%
dplyr::filter(below_background == "yes") %>%
dplyr::filter(Timepoint != -3) %>%
pivot_wider(names_from=population, values_from=bg) %>%
dplyr::filter(is.na(`green+`) == FALSE & is.na(`red+`) == FALSE)
`%notin%` <- Negate(`%in%`)
percentage_filtered = percentage_filtered %>%
dplyr::filter(Mouse_Timepoint %notin% filter_below$Mouse_Timepoint)
ggplot(percentage_filtered) +
annotate("rect", xmin=0.25, xmax=7.25, ymin=0, ymax=Inf, fill="honeydew2", colour=NA, alpha=0.75) +
geom_point(aes(x=Timepoint, y=positive_events_minusbg_nozeros, colour=population), size=2, alpha=1) +
geom_line(aes(x=Timepoint, y=positive_events_minusbg_nozeros, colour=population, group=interaction(Mouse, population)), size=1) +
scale_y_log10(name="Positive events \n(background subtracted)\n", labels = trans_format("log10", math_format(10^.x))) +
scale_x_continuous(name="Day", breaks=seq(-4,15,2)) +
scale_colour_manual(values=c("green4", "red3")) +
theme_linedraw(12) +
theme(panel.grid = element_blank(), panel.grid.major.y = element_blank(), panel.border=element_rect(size=1.5), legend.position = "top") +
annotation_logticks(sides="l") +
facet_wrap(~Mouse_Treatment)
## Warning: Transformation introduced infinite values in continuous y-axis
ggsave("figures/exp17_timecourse_green_red_byMouse.png", height=8, width=12, dpi=150)
## Warning: Transformation introduced infinite values in continuous y-axis
ggsave("figures/exp17_timecourse_green_red_byMouse.pdf", height=8, width=12)
## Warning: Transformation introduced infinite values in continuous y-axis
percentage_filtered = percentage_filtered %>%
mutate(Treatment_Full = gsub("NT", "Non-Targeting", Treatment)) %>%
mutate(Treatment_Full = gsub("GFPT", "GFP-Targeting", Treatment_Full)) %>%
mutate(Treatment_Full = factor(Treatment_Full, levels=c("Non-Targeting", "GFP-Targeting")))
set.seed(111)
#median
ggplot(percentage_filtered) +
annotate("rect", xmin=0.75, xmax=7.75, ymin=0, ymax=Inf, fill="honeydew2", colour=NA, alpha=0.75) +
geom_jitter(aes(x=Timepoint, y=positive_events_minusbg_nozeros, colour=population), position=position_jitterdodge(dodge.width=1.1), size=2, alpha=0.5) +
stat_summary(aes(x=Timepoint, y=positive_events_minusbg_nozeros, group=population, colour=population), size=0.75, alpha=1,
geom="line", position=position_dodge(width=0.5), fun = median) +
stat_summary(aes(x=Timepoint, y=positive_events_minusbg_nozeros, group=factor(interaction(population, Timepoint)), colour=population), size=0.75, alpha=1,
geom="pointrange", position=position_dodge(width=1), fun = median, fun.min = min, fun.max = max) +
scale_y_log10(name="Positive events\n(background subtracted)", limits=c(1,40000)) +
scale_x_continuous(name="Day", breaks=seq(-4,15,2)) +
scale_colour_manual(values=c("green4", "red3"), labels=c("GFP+", "mCherry+")) +
theme_linedraw(14) +
theme(panel.grid = element_blank(), panel.grid.major.y = element_blank(), panel.border=element_rect(size=1.5), legend.position = "top") +
annotation_logticks(sides="l") +
facet_wrap(~Treatment_Full, scales="free_y")
## Warning: Transformation introduced infinite values in continuous y-axis
ggsave("figures/exp17_timecourse_green_red_byTreatment_pointrange_median.png", width=12, height=6, dpi=150)
## Warning: Transformation introduced infinite values in continuous y-axis
ggsave("figures/exp17_timecourse_green_red_byTreatment_pointrange_median.pdf", width=12, height=6)
## Warning: Transformation introduced infinite values in continuous y-axis
dayfourteen = percentage_filtered %>%
dplyr::filter(Timepoint == 14)
#calculate percent positive green/red using background subtracted-positive events (no negatives)
dayfourteen = dayfourteen %>%
mutate(positive_events_minusbg_nonegs = as.double(positive_events_minusbg)) %>%
mutate(positive_events_minusbg_nonegs = case_when(positive_events_minusbg_nonegs <= 0 ~ 0,
positive_events_minusbg_nonegs > 0 ~ positive_events_minusbg_nonegs)) %>%
group_by(Mouse, Timepoint) %>%
mutate(positive_events_minusbg_nonegs_gfp_mcherry_total = sum(positive_events_minusbg_nonegs)) %>%
mutate(positive_events_minusbg_nonegs_percent_fluor = positive_events_minusbg_nonegs / positive_events_minusbg_nonegs_gfp_mcherry_total * 100) %>%
ungroup()
#order mice by green fluor
green_ranked = dayfourteen %>%
dplyr::filter(population=="green+") %>%
arrange(Treatment, positive_events_minusbg_nonegs_percent_fluor) %>%
pull(Mouse)
dayfourteen = dayfourteen %>%
mutate(Mouse = factor(Mouse, levels=rev(green_ranked))) %>%
mutate(population = factor(population, levels=c("red+", "green+")))
#make df of labels to plot percentage red value on bar plot
labels = dayfourteen %>%
dplyr::filter(population == "green+") %>%
mutate(labels = paste0(round(positive_events_minusbg_nonegs_percent_fluor, 0), "%"))
ggplot() +
geom_bar(data=dayfourteen, aes(x=Mouse, y=positive_events_minusbg_nonegs_percent_fluor, fill=population), stat = "identity") +
geom_text(data=labels, aes(x=Mouse, y=case_when(positive_events_minusbg_nonegs_percent_fluor > 10 ~ positive_events_minusbg_nonegs_percent_fluor - 4,
positive_events_minusbg_nonegs_percent_fluor < 10 ~ positive_events_minusbg_nonegs_percent_fluor + 3),
label=labels), colour="white", size=3.5) +
scale_fill_manual(values = c("red3", "green4"), labels=c("mCherry+", "GFP+")) +
scale_y_continuous(name="Day 14 Percent GFP+ and mCherry+ events \n(background subtracted)",
expand = c(0, 0), position="right", breaks=c(0,25,50,75,100), labels=c(0,25,50,75,100)) +
scale_x_discrete(name = "", position = "top") +
coord_flip() +
theme_linedraw(14) +
theme(legend.position = "bottom", legend.title=element_blank(), panel.grid=element_blank(),
plot.margin=unit(c(5, 5, 5, 15),"mm"),
panel.border = element_rect(size=1.25)) +
guides(fill = guide_legend(nrow = 1))
ggsave("figures/exp17_percent_green_red_barplot.pdf", height=6, width=7)
dayfourteen_green = dayfourteen %>%
dplyr::filter(population=="green+") %>%
mutate(Treatment = factor(Treatment, levels=c("NT", "GFPT")))
nt = dayfourteen_green %>%
dplyr::filter(Treatment=="NT") %>%
pull(positive_events_minusbg_nonegs_percent_fluor)
gfpt = dayfourteen_green %>%
dplyr::filter(Treatment=="GFPT") %>%
pull(positive_events_minusbg_nonegs_percent_fluor)
(mean_nt = round(mean(nt), 0))
## [1] 81
(mean_gfpt = round(mean(gfpt), 0))
## [1] 6
(median_nt = round(median(nt), 0))
## [1] 99
(median_gfpt = round(median(gfpt), 0))
## [1] 1
#do mann whitney wilcoxon test for nonparametric distribution
(test = wilcox.test(gfpt, nt, alternative = "less"))
## Warning in wilcox.test.default(gfpt, nt, alternative = "less"): cannot compute
## exact p-value with ties
##
## Wilcoxon rank sum test with continuity correction
##
## data: gfpt and nt
## W = 2, p-value = 0.0002485
## alternative hypothesis: true location shift is less than 0
pvalue = formatC(test$p.value, format = "e", digits = 2)
ggplot(dayfourteen_green, aes(x=Treatment, y=percent_fluor, fill=population)) +
geom_bar(stat="summary", fun = median, colour="black", size=0.75, width=0.5) +
geom_jitter(width=0.2, height=0.2, shape=21, colour="black", fill="white", size=4, stroke=1) +
scale_fill_manual(values=c("green4")) +
scale_x_discrete(name="") +
scale_y_continuous(name="Day 14 Percent GFP+ events \n(background subtracted)", expand=c(0,0), limits=c(0, 120), breaks=seq(0,100,20)) +
annotate("text", x=1.5, y=114, label=paste("p =", pvalue), size=4) +
annotate("text", x=1.025, y=median_nt+6, label=paste0("median ", median_nt,"%"), size=4, colour="green4") +
annotate("text", x=2.025, y=median_gfpt+11, label=paste0("median ", median_gfpt,"%"), size=4, colour="green4") +
geom_segment(x=1, xend=2, y=110, yend=110) +
theme_linedraw(15) +
theme(panel.border = element_rect(size=1.5), panel.grid = element_blank(), legend.position="none",
axis.text.x = element_text(size=16), axis.ticks.x = element_blank())
ggsave("figures/exp17_Day14_green_barplot_pvalue_median.pdf", height=6, width=4)
sessionInfo()
## R version 4.0.3 (2020-10-10)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 20.04.2 LTS
##
## Matrix products: default
## BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.9.0
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.9.0
##
## locale:
## [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
## [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
## [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
## [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
## [9] LC_ADDRESS=C LC_TELEPHONE=C
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] forcats_0.5.0 stringr_1.4.0
## [3] dplyr_1.0.4 purrr_0.3.4
## [5] readr_1.3.1 tidyr_1.1.0
## [7] tibble_3.0.6 tidyverse_1.3.0
## [9] Phenoflow_1.1.2 foreach_1.5.0
## [11] flowAI_1.19.1 flowFDA_0.99
## [13] mclust_5.4.6 multcomp_1.4-13
## [15] TH.data_1.0-10 MASS_7.3-53
## [17] survival_3.2-7 mvtnorm_1.1-0
## [19] flowFP_1.47.0 flowViz_1.53.0
## [21] lattice_0.20-41 flowClean_1.27.0
## [23] cowplot_1.0.0 scales_1.1.1
## [25] ggcyto_1.17.0 flowWorkspace_4.1.1
## [27] ncdfFlow_2.35.0 BH_1.72.0-3
## [29] RcppArmadillo_0.9.900.1.0 ggplot2_3.3.2
## [31] flowCore_2.1.0
##
## loaded via a namespace (and not attached):
## [1] readxl_1.3.1 changepoint_2.2.2 backports_1.1.8
## [4] plyr_1.8.6 igraph_1.2.5 splines_4.0.3
## [7] digest_0.6.25 htmltools_0.4.0 fansi_0.4.1
## [10] magrittr_1.5 cluster_2.1.0 sfsmisc_1.1-7
## [13] recipes_0.1.12 Biostrings_2.57.1 modelr_0.1.8
## [16] gower_0.2.1 RcppParallel_5.0.1 matrixStats_0.56.0
## [19] sandwich_2.5-1 cytolib_2.1.2 jpeg_0.1-8.1
## [22] colorspace_1.4-1 rvest_0.3.5 blob_1.2.1
## [25] haven_2.3.1 xfun_0.14 crayon_1.3.4
## [28] jsonlite_1.6.1 hexbin_1.28.1 graph_1.67.1
## [31] zoo_1.8-8 iterators_1.0.12 ape_5.4
## [34] glue_1.4.2 gtable_0.3.0 ipred_0.9-9
## [37] zlibbioc_1.35.0 XVector_0.29.1 phyloseq_1.33.0
## [40] IDPmisc_1.1.20 Rgraphviz_2.33.0 Rhdf5lib_1.11.0
## [43] BiocGenerics_0.35.3 DBI_1.1.0 Rcpp_1.0.4.6
## [46] bit_1.1-15.2 stats4_4.0.3 lava_1.6.7
## [49] prodlim_2019.11.13 httr_1.4.1 RColorBrewer_1.1-2
## [52] ellipsis_0.3.1 farver_2.0.3 pkgconfig_2.0.3
## [55] XML_3.99-0.3 nnet_7.3-14 dbplyr_1.4.4
## [58] caret_6.0-86 labeling_0.3 tidyselect_1.1.0
## [61] rlang_0.4.10 reshape2_1.4.4 munsell_0.5.0
## [64] cellranger_1.1.0 tools_4.0.3 cli_2.0.2
## [67] generics_0.1.0 ade4_1.7-15 broom_0.5.6
## [70] evaluate_0.14 biomformat_1.17.0 yaml_2.2.1
## [73] ModelMetrics_1.2.2.2 knitr_1.28 fs_1.4.1
## [76] nlme_3.1-149 xml2_1.3.2 rstudioapi_0.11
## [79] compiler_4.0.3 png_0.1-7 reprex_0.3.0
## [82] stringi_1.4.6 Matrix_1.2-18 vegan_2.5-6
## [85] permute_0.9-5 multtest_2.45.0 vctrs_0.3.6
## [88] pillar_1.4.4 lifecycle_0.2.0 data.table_1.12.8
## [91] R6_2.4.1 latticeExtra_0.6-29 KernSmooth_2.23-17
## [94] gridExtra_2.3 RProtoBufLib_2.1.0 IRanges_2.23.6
## [97] codetools_0.2-16 boot_1.3-25 assertthat_0.2.1
## [100] rhdf5_2.33.0 withr_2.2.0 S4Vectors_0.27.10
## [103] mgcv_1.8-33 parallel_4.0.3 hms_0.5.3
## [106] grid_4.0.3 rpart_4.1-15 timeDate_3043.102
## [109] class_7.3-17 rmarkdown_2.2 pROC_1.16.2
## [112] Biobase_2.49.0 lubridate_1.7.9.2